/////////////////////////////////////////////////////////////////////////////////////
// Include Files
#include "Definitions.h"

#include "Camera.h"

#include <math.h>

/////////////////////////////////////////////////////////////////////////////////////
// CCamera Implementation

//IE::CCamera::CCamera()
//{
//	m_matTransform  = Matrix();
//	m_matProjection = Matrix();
//}
//
//void IE::CCamera::SetPerspective( float_t _fFOV, float_t _fAspect, 
//	float_t _fNear, float_t _fFar )
//{
//	float_t f11 = 1.0f / tan(_fFOV / 2.0f);
//	float_t f00 = f11 / _fAspect;
//	float_t f22 = _fFar / (_fFar - _fNear);
//	float_t f32 = _fFar * _fNear / (_fNear - _fFar);
//
//	m_matProjection.row[0] = Vector(f00, 0.0f, 0.0f, 0.0f);
//	m_matProjection.row[1] = Vector(0.0f, f11, 0.0f, 0.0f);
//	m_matProjection.row[2] = Vector(0.0f, 0.0f, f22, 1.0f);
//	m_matProjection.row[3] = Vector(0.0f, 0.0f, f32, 0.0f);
//}
//
//void IE::CCamera::Translate( float_t _fX, float_t _fY, float_t _fZ )
//{
//	m_matTransform.row[3] = 
//		VectorAdd(m_matTransform.row[3], Vector(_fX, _fY, _fZ, 0.0f));
//}
//
//void IE::CCamera::RotateViewAroundOrigin( float_t _fX, float_t _fY )
//{
//	// make sure the y rotation does not go past vertical
//	if( _fY > 0.0f && m_matTransform.arr[ 6] < 0.0f )
//	{
//		float_t fAngle = CE_PI_DIV_2 - acos(m_matTransform.arr[ 5]);
//		if( fAngle < _fY ) _fY = fAngle;
//	}
//	else if( _fY < 0.0f && m_matTransform.arr[ 6] > 0.0f )
//	{
//		float_t fAngle = -CE_PI_DIV_2 + acos(m_matTransform.arr[ 5]);
//		if( fAngle > _fY ) _fY = fAngle;
//	}
//
//	// remove position from transform
//	vector_t vPos = m_matTransform.row[3];
//	m_matTransform.row[3] = Vector(0.0f, 0.0f, 0.0f, 1.0f);
//
//	matrix_t matRotate;
//
//	// rotate around global y
//	matRotate = MatrixRotationY(_fX);
//	m_matTransform = MatrixMul(matRotate, m_matTransform);
//
//	// rotate around local x
//	matRotate = MatrixRotationX(_fY);
//	m_matTransform = MatrixMul(m_matTransform, matRotate);
//
//	// restore position
//	m_matTransform.row[3] = vPos;
//}
